package databases

import (
	"ginvueadmin/global"

	"github.com/go-redis/redis"
	"go.uber.org/zap"
)

func Redis() {
	/*
		1. 从全局变量 global.CONFIG 中获取了 Redis 配置信息，并将其存储在 redisCfg 变量中。
		2. 创建了一个 Redis 客户端实例，并需要传入一个包含连接配置的 redis.Options 结构体，从配置中获取的地址、密码和数据库信息。
		3. 发送了一个 Ping 命令到 Redis 服务器，以检查连接是否正常。Ping() 是 Redis 客户端的方法之一，用于向服务器发送 Ping 命令并返回响应。Result() 方法用于获取命令的结果。
			a. 如果出现错误，则记录错误日志
			b. 否则，记录连接成功的日志，并将 global.REDIS 设置为连接好的 Redis 客户端。
	*/

	redisConf := global.CONFIG.Redis

	client := redis.NewClient(&redis.Options{
		Addr:     redisConf.Addr,
		Password: redisConf.Password,
		DB:       redisConf.DB,
	})

	pong, err := client.Ping().Result()
	if err != nil {
		global.LOG.Error("redis connect ping error", zap.Any("err", err))
	} else {
		global.LOG.Info("redis connect ping success", zap.String("pong", pong))
		global.REDIS = client
	}
}
